#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <cmath>
using namespace std;
//long long n,k;
//int arr[5000005],ans;
//bool check(int n) {
//	if (n == 2)return 1;
//	if (n == 1 || n % 2 == 0)return 0;
//	
//	for (int i = 3; i*i <=n; i+=2)
//	{
//		if (n % i == 0)
//			return 0;
//	}
//	return 1;
//}
//void dfs(int x, long long sum, int startx) {
//	if (x>k)
//	{
//		if (check(sum))
//		ans++;
//		return;
//	}
//	for (int i = startx; i < n; i++)
//	{
//		dfs(x + 1, sum + arr[i], i + 1);
//	}
//}
//int main() {
//	cin >> n >> k;
//	for (int i = 0; i < n; i++)
//	{
//		cin >> arr[i];
//	}
//	dfs(1,0,0);
//	printf("%d", ans);
//	return 0;
//}

//int main() {
//	printf("%d", check(25));
//	return 0;
//}
int n;
long long salt[15], sweet[15],r[15],s1=1,s2,minx=1e9;

void dfs(int x,long long delta) {
	if (x > n)
	{
		return;
	}
	for (int i = 1; i <= n; i++)
	{
		if (r[i]==0)
		{
			s1 /= salt[i];
			s2 -= sweet[i];
			minx = min(delta, minx);
			r[i] = 1;
			dfs(x + 1, abs(s2 - s1));
			r[i] = 0;
			s1 *= salt[i];
			s2 += sweet[i];
		}
	}
}

int main() {
	cin >> n;

	for (int i = 1; i <= n; i++)
	{
		cin >> salt[i] >> sweet[i];
		s1 *= salt[i];
		s2 += sweet[i];
	}
	memset(r, 0, sizeof(r));
	dfs(1, fabs(s1-s2));
	printf("%lld", minx);
	return 0;
}